package com.one.blocks.rbac.controller.vo;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.one.blocks.common.util.StrictTreeNode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @author <a href="mailto:idler41@163.con">linfuxin</a> created on 2023-08-19 10:54:29
 */
@ApiModel(value = "系统组织树")
@Data
public class SysOrgTreeVo implements StrictTreeNode<SysOrgTreeVo, Integer>, Serializable {

    /**
     * 主键ID
     */
    @ApiModelProperty(value = "主键ID")
    private Integer id;
    /**
     * 上级组织id
     */
    @ApiModelProperty(value = "上级组织id")
    private Integer parentId;
    /**
     * 组织编码
     */
    @ApiModelProperty(value = "组织编码")
    private String code;
    /**
     * 组织及以下所有编码
     */
    @ApiModelProperty(value = "组织及以下所有编码")
    private String fullCode;
    /**
     * 组织名称
     */
    @ApiModelProperty(value = "组织名称")
    private String name;
    /**
     * 组织状态: 0-停用 1-启用
     */
    @ApiModelProperty(value = "组织状态: 0-停用 1-启用")
    private Integer state;
    /**
     * 显示层级
     */
    @ApiModelProperty(value = "显示层级")
    private Integer levelNum;
    /**
     * 显示顺序
     */
    @ApiModelProperty(value = "显示顺序")
    private Integer orderNum;

    /**
     * 子目录
     */
    @ApiModelProperty(value = "子目录")
    private List<SysOrgTreeVo> children;

    @Override
    public Integer getTreeId() {
        return id;
    }

    @Override
    public Integer getParentTreeId() {
        return parentId;
    }

    @JsonIgnore
    @Override
    public Integer getLevel() {
        return getLevelNum();
    }
}
